home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C ++ / Applications / Pict2Ascii 1.03 / Panes / CDynamicText.cp < prev    next >
Encoding:
Text File  |  1997-05-22  |  6.6 KB  |  217 lines  |  [TEXT/CWIE]

  1. // =================================================================================
  2. //    CDynamicText.cp                            ©1997 BB's Team inc. All rights reserved
  3. // =================================================================================
  4. #include "CDynamicText.h"
  5.  
  6. #include <LString.h>
  7. #include <LScroller.h>
  8. #include <UDrawingState.h>
  9. #include <UDrawingUtils.h>
  10.  
  11.  
  12. // ---------------------------------------------------------------------------------
  13. //        • CreateDynamicTextStream [static]
  14. // ---------------------------------------------------------------------------------
  15. CDynamicText*
  16. CDynamicText::CreateDynamicTextStream (LStream *inStream)
  17. {
  18.     return new CDynamicText ( inStream );
  19. }
  20.  
  21.  
  22. // ---------------------------------------------------------------------------------
  23. //        • CDynamicText
  24. // ---------------------------------------------------------------------------------
  25. CDynamicText::CDynamicText()
  26. { }
  27.  
  28.  
  29. // ---------------------------------------------------------------------------------
  30. //        • CDynamicText (SPaneInfo&, SViewInfo&, UInt16, ResIDT)
  31. // ---------------------------------------------------------------------------------
  32. CDynamicText::CDynamicText (
  33.     const SPaneInfo    &inPaneInfo,
  34.     const SViewInfo    &inViewInfo,
  35.     Uint16            inTextAttributes,
  36.     ResIDT            inTextTraitsID)
  37.         : LTextEdit ( inPaneInfo, inViewInfo, inTextAttributes, inTextTraitsID )
  38. { }
  39.  
  40.  
  41. // ---------------------------------------------------------------------------------
  42. //        • CDynamicText (const CDynamicText&)
  43. // ---------------------------------------------------------------------------------
  44. CDynamicText::CDynamicText(const CDynamicText &inOriginal)
  45.     : LTextEdit ( inOriginal )
  46. {
  47.     // Copy the text traits.
  48.     ::BlockMoveData( &inOriginal.mTextTraits,
  49.         &mTextTraits, sizeof(TextTraitsRecord) );
  50. }
  51.  
  52.  
  53. // ---------------------------------------------------------------------------------
  54. //        • CDynamicText (LStream*)
  55. // ---------------------------------------------------------------------------------
  56. CDynamicText::CDynamicText (LStream    *inStream)
  57.     : LTextEdit ( inStream )
  58. { }
  59.  
  60.  
  61. // ---------------------------------------------------------------------------------
  62. //        • FinishCreateSelf
  63. // ---------------------------------------------------------------------------------
  64. void CDynamicText::FinishCreateSelf ()
  65. {
  66.     // Load the text traits for the text.
  67.     TextTraitsH    theTraitsH = UTextTraits::LoadTextTraits (mTextTraitsID);
  68.     Assert_( theTraitsH != nil );
  69.     
  70.     // Copy the text traits.
  71.     ::BlockMoveData( *theTraitsH, &mTextTraits, sizeof(TextTraitsRecord) );
  72. }
  73.  
  74.  
  75. // ---------------------------------------------------------------------------------
  76. //        • SetTextTraitsID (ResIDT)
  77. // ---------------------------------------------------------------------------------
  78. void CDynamicText::SetTextTraitsID (ResIDT inTextTraitsID)
  79. {
  80.     // Load the text traits.
  81.     TextTraitsH    theTraitsH = UTextTraits::LoadTextTraits( inTextTraitsID );
  82.     Assert_( theTraitsH != nil );
  83.     
  84.     // Copy the text traits.
  85.     ::BlockMoveData( *theTraitsH, &mTextTraits, sizeof(TextTraitsRecord) );
  86.     
  87.     // Refresh the text.
  88.     SetTextTraits();
  89. }
  90.  
  91.  
  92. // ---------------------------------------------------------------------------------
  93. //        • SetTextTraits (TextTraitsRecord&)
  94. // ---------------------------------------------------------------------------------
  95. void CDynamicText::SetTextTraits (const TextTraitsRecord &inTextTraits)
  96. {
  97.     // Copy the text traits.
  98.     ::BlockMoveData( &inTextTraits, &mTextTraits, sizeof(TextTraitsRecord) );
  99.     
  100.     // Refresh the text.
  101.     SetTextTraits();
  102. }
  103.  
  104.  
  105. // ---------------------------------------------------------------------------------
  106. //        • GetTextTraits
  107. // ---------------------------------------------------------------------------------
  108. void CDynamicText::GetTextTraits (TextTraitsRecord &outTextTraits) const
  109. {
  110.     // Copy the text traits.
  111.     ::BlockMoveData( &mTextTraits, &outTextTraits, sizeof(TextTraitsRecord) );
  112. }
  113.  
  114.  
  115. // ---------------------------------------------------------------------------------
  116. //        • SetFont
  117. // ---------------------------------------------------------------------------------
  118. void CDynamicText::SetFont (const Str255 inFontName)
  119. {
  120.     // Copy the font name.
  121.     LString::CopyPStr( inFontName, mTextTraits.fontName );
  122.  
  123.     // Get the font number.
  124.     ::GetFNum( mTextTraits.fontName, &mTextTraits.fontNumber );
  125.     
  126.     // Refresh the text.
  127.     SetTextTraits();
  128. }
  129.  
  130.  
  131. // ---------------------------------------------------------------------------------
  132. //        • GetFont
  133. // ---------------------------------------------------------------------------------
  134. void CDynamicText::GetFont (Str255 outFontName) const
  135. {
  136.     // Copy the font name.
  137.     LString::CopyPStr( mTextTraits.fontName, outFontName );
  138. }
  139.  
  140.  
  141. // ---------------------------------------------------------------------------------
  142. //        • SetSize
  143. // ---------------------------------------------------------------------------------
  144. void
  145. CDynamicText::SetSize( 
  146.     Int16    inSize )
  147. {
  148.     // Set the size.
  149.     mTextTraits.size = inSize;
  150.     
  151.     // Refresh the text.
  152.     SetTextTraits();
  153. }
  154.  
  155.  
  156. // ---------------------------------------------------------------------------------
  157. //        • GetSize
  158. // ---------------------------------------------------------------------------------
  159. Int16
  160. CDynamicText::GetSize() const
  161. {
  162.     return mTextTraits.size;
  163. }
  164.  
  165.  
  166. // ---------------------------------------------------------------------------------
  167. //        • SetTextTraits
  168. // ---------------------------------------------------------------------------------
  169. void
  170. CDynamicText::SetTextTraits (void)
  171. {
  172.     UTextTraits::SetTETextTraits(&mTextTraits, mTextEditH);
  173.     
  174.     SPoint32    scrollUnit;
  175.     scrollUnit.h = 4;
  176.     scrollUnit.v = (**mTextEditH).lineHeight;
  177.     SetScrollUnit (scrollUnit);
  178.     Refresh();
  179. }
  180.  
  181.  
  182. // ---------------------------------------------------------------------------------
  183. //        • SetWidth
  184. // ---------------------------------------------------------------------------------
  185. void
  186. CDynamicText::SetWidth (Int16 inWidth)
  187. {
  188.     ResizeImageTo (inWidth, ::TEGetHeight((**mTextEditH).nLines, 1, mTextEditH), false);
  189.  
  190.     // Warning : do not remove
  191.     // This avoids some of the unwanted line breaks appearing in certain circumstances
  192.     AlignTextEditRects();
  193. }
  194.  
  195.  
  196. // ---------------------------------------------------------------------------------
  197. //        • PrepareToPrint
  198. // ---------------------------------------------------------------------------------
  199. void
  200. CDynamicText::PrepareToPrint (void)
  201. {
  202.     SDimension32 theImageSize;
  203.     GetImageSize(theImageSize);
  204.     GetFrameSize (mFrameSize);
  205.     ResizeFrameTo (theImageSize.width, theImageSize.height, false);
  206. }
  207.  
  208.  
  209. // ---------------------------------------------------------------------------------
  210. //        • RevertFromPrint
  211. // ---------------------------------------------------------------------------------
  212. void
  213. CDynamicText::RevertFromPrint (void)
  214. {
  215.     ResizeFrameTo (mFrameSize.width, mFrameSize.height, false);
  216. }
  217.